package com.eedi.framework.info.service;

import com.eedi.framework.info.controller.org.vo.*;
import com.eedi.framework.common.pojo.PageResult;
import com.eedi.framework.info.controller.org.vo.*;

import java.util.Collection;
import java.util.List;

public interface OrgInfoService {

    /**
     * 创建机构基本信息
     * @param req
     * @return
     */
    OrgInfoResp create(OrgInfoCreateReq req);

    /**
     * 更新机构基本信息
     *
     * @param updateReqVO
     */
    int update(OrgInfoUpdateReq updateReqVO);

    /**
     * 通过机构ID来禁用机构
     * @param orgInfoId
     */
    int disableByOrgInfoId(String orgInfoId);

    /**
     * 通过机构ID来启用机构
     * @param orgInfoId
     */
    int enableByOrgInfoId(String orgInfoId);

    /**
     * 查询机构列表
     * @param req
     * @return
     */
    PageResult<OrgInfoResp> page(OrgInfoPageReq req);

    /**
     * 获得所有机构
     *
     * @return 机构编号数组
     */
    List<String> getOrgInfoIdAndTenantIdList();

    /**
     * 校验机构是否合法
     *
     * @param orgInfoId 机构编号
     */
    Boolean validOrg(String orgInfoId);

    /**
     * 获取机构信息
     *
     * @param orgInfoId 机构编号
     */
    OrgInfoResp getByOrgInfoId(String orgInfoId);

    /**
     * 获取机构信息
     *
     * @param orgInfoIds 机构编号
     */
    List<OrgInfoResp> getByOrgInfoId(Collection<String> orgInfoIds);

    /**
     * 获取机构下超级管理员的列表
     * @param orgInfoId
     * @return
     */
    List<OrgInfoAdminUserResp> listOrgInfoAdminUsers(String orgInfoId);

    /**
     * 统计机构数量
     * @return 机构数量
     */
    Long countOrgInfos();
}
